package com.seedwill.common.query.filter;

import java.io.Serializable;
import java.util.Collection;

/**
 * 扩展的条件查询接口
 * 
 * 
 * @author kdyi
 *
 */
public interface IExtFilter extends Serializable{
	
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addEqualToJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addNotEqualToJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addGreaterOrEqualThanJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addGreaterThanJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addLessOrEqualThanJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addLessThanJoined(String joinFlag, String field, Object value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param low
	 * @param high
	 */
	public void addBetweenJoined(String joinFlag, String field, Object low, Object high);
	/**
	 * @param joinFlag
	 * @param field
	 * @param low
	 * @param high
	 */
	public void addNotBetweenJoined(String joinFlag, String field, Object low, Object high);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addInJoined(String joinFlag, String field, Collection value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addNotInJoined(String joinFlag, String field, Collection value);
	/**
	 * @param joinFlag
	 * @param field
	 */
	public void addIsNullJoined(String joinFlag, String field);
	/**
	 * @param joinFlag
	 * @param field
	 */
	public void addNotNullJoined(String joinFlag, String field);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addLikeJoined(String joinFlag, String field, String value);
	/**
	 * @param joinFlag
	 * @param field
	 * @param value
	 */
	public void addNotLikeJoined(String joinFlag, String field, String value);
	/**
	 * @param joinFlag
	 * @param hql
	 * @param objects
	 */
	public void addClauseJoined(String joinFlag, String hql , Object...objects);
	/**
	 * 增加 like %aa 查询条件
	 * 只在SQL/HQL模式下有效
	 * @param joinFlag 条件连接
	 * @param filed
	 * @param value
	 */
	public void addLeftLikeJoined(String joinFlag, String filed, Object value );
	/**
	 * 增加 not like %aa 查询条件
	 * 只在SQL/HQL模式下有效
	 * @param joinFlag 条件连接
	 * @param filed
	 * @param value
	 */
	public void addNotLeftLikeJoined(String joinFlag, String filed, Object value );
	/**
	 * 增加 like aa% 查询条件
	 * 只在SQL/HQL模式下有效
	 * @param joinFlag 条件连接
	 * @param filed
	 * @param value
	 */
	public void addRightLikeJoined(String joinFlag, String filed, Object value );
	/**
	 * 增加 not like aa% 查询条件
	 * 只在SQL/HQL模式下有效
	 * @param joinFlag 条件连接
	 * @param filed
	 * @param value
	 */
	public void addNotRightLikeJoined(String joinFlag, String filed, Object value );
	/**
	 * 增加本地查询条件语句
	 * 只在SQL模式下有效 
	 * @param joinFlag 条件连接
	 * @param clause
	 * @param objects
	 */
	public void addNativeClauseJoined(String joinFlag, String clause, Object... objects );
}
